<?php

namespace app\shop\controller;

use think\Controller;

class Index extends Controller
{
    public function __construct()
    {
        parent::__construct();

        $this->ProductModel = model('Product.Product');
        $this->BusinessModel = model('Business.Business');
        $this->TypeModel = model('Product.Type');
        $this->CartModel = model('Product.Cart');
    }

    // 首页数据
    public function index()
    {
        // 判断是否有接收到post请求
        if ($this->request->isPost()) {
            // 查询轮播图
            $top = $this->ProductModel->where(['flag' => '1'])->limit(5)->order('createtime', 'desc')->select();

            // 查询分类
            $type = $this->TypeModel->limit(8)->select();

            // 查询新品首页
            $news = $this->ProductModel->where(['flag' => '1'])->limit(8)->order('createtime', 'desc')->select();

            // 组装数据
            $data = [
                'top' => $top,
                'type' => $type,
                'news' => $news,
            ];


            // 返回数据
            $this->success('首页数据', null, $data);
            exit;
        }
    }

    // 商品分类数据
    public function type()
    {
        // 查询
        $result = $this->TypeModel->select();

        // 判断
        if (!$result) {
            $this->error('暂无数据返回');
            exit;
        } else {
            $this->success('返回分类数据成功', null, $result);
            exit;
        }
    }

    // 商品数据加载
    public function list()
    {
        // 判断是否有post请求
        if ($this->request->isPost()) {
            // 接收参数
            $page = $this->request->param('page', 1, 'trim');
            $typeid = $this->request->param('typeid', 0, 'trim');
            $flag = $this->request->param('flag', '0', 'trim');
            $sort = $this->request->param('sort', 'createtime', 'trim');
            $by = $this->request->param('by', 'desc', 'trim');
            $keywords = $this->request->param('keywords', '', 'trim');
            $limit = 8;

            // 设置偏移量
            $offset = ($page - 1) * $limit;

            // 查询分类的名称
            $TypeName = $this->TypeModel->where(['id' => $typeid])->value('name');
            // 判断如果为空的话，就直接展示全部分类
            $TypeName = empty($TypeName) ? '全部分类' : $TypeName;

            // 定义一个where变量，来存放条件
            $where = [];
            // 判断关键字，模糊查询
            if (!empty($keywords)) {
                $where['name'] = ['like', "%$keywords%"];
            }

            //分类筛选
            if ($typeid) {
                $where['typeid'] = $typeid;
            }

            //标签筛选
            if ($flag != "0") {
                $where['flag'] = $flag;
            }

            // 查询数据列表
            $list = $this->ProductModel
                ->where($where)
                ->order($sort, $by)
                ->limit($offset, $limit)
                ->select();

            // 组装数据：一个是分类的展示数据，一个是搜索框中的展示数据
            $data = [
                'TypeName' => $TypeName,
                'list' => $list
            ];

            if ($list) {
                $this->success('返回商品数据', null, $data);
                exit;
            } else {
                $this->error('暂无更多商品数据');
                exit;
            }
        }
    }

    // 商品数据详情
    public function product()
    {
        // 判断是否有接受到post请求
        if ($this->request->isPost()) {
            // 接收商品id
            $proid = $this->request->param('proid', 0, 'trim');

            // 查询
            $product = $this->ProductModel->with(['type', 'unit'])->find($proid);

            if ($product) {
                $this->success('返回商品数据', null, $product);
                exit;
            } else {
                $this->error('无商品数据');
                exit;
            }
        }
    }

    // 购物车徽标数量
    public function count() {
        // 判断是否有post请求
        if($this->request->isPost()) {
            // 接收参数
            $busid = $this->request->param('busid', 0, 'trim');

            // 查询用户是否存在
            $business = $this->BusinessModel->find($busid);

            // 判断用户存不存在
            if(!$business) {
                $this->error('用户不存在');
                exit;
            }

            // 查询购物车徽标数量
            $count = $this->CartModel->where(['busid' => $busid])->sum('nums');

            // 成功返回数量
            $this->success('返回购物车徽标数量', null, $count);
            exit;
        }
    }
}
